#include "SqList.h" 

SqList* InitList(){
	SqList *L = NULL;
	int i=0; 
	L = malloc(sizeof(SqList)); 
	L->length = 0;
	

	for(;i<MAXSIZE;i++){
		L->data[i] = 0;
	}
	return L;
}

bool ListEmpty(SqList L){ 
	if(L.length==0)									//这里的L是个普通变量,不是指针变量
		return true;
	return false;
}

void ClearList(SqList *L){
	if(L==NULL)
		return;

	for (int i = 0; i < L->length; ++i)
	{
		L->data[i] = 0;
	}
	L->length = 0;
}

/**
i从坐标0开始
i的范围[0,L.length)
*/
void GetElem(SqList L,int i,ElemType *e){
	if(L.length == 0 || i<0 || i+1>L.length ){
		e = NULL;
		return;
	}
	*e = L.data[i]; 
}

int LocateElem(SqList L,ElemType e){
	int index = -1;
	if(L.length==0)
		return index;
	for(int i=0;i<L.length;i++){
		if(L.data[i]==e){
			index = i;
			break;
		}
	}
	return index;
}

/**
在线性表L中的第i个位置插入新元素e,从坐标0开始.
*/
void ListInsert(SqList *L,int i,ElemType e){
	if(L==NULL){
		return;
	}
	if(L->length==MAXSIZE||i<0||i>=MAXSIZE)
		return;
	int index=L->length-2;
	for(;index>=i;index--){
		L->data[index+1] = L->data[index];
	}

	L->data[i] = e;
	L->length++;
}

void ListDelete(SqList *L,int i,ElemType *e){
	if(L==NULL){
		return;
	}
	if(L->length==0||i<0||i>L->length-1)
		return;

	for(int index=i;index<L->length;index++){
		if(index==L->length-1)
			L->data[index] = 0;
		else
			L->data[index] = L->data[index+1];
	}
	L->length--;
}


int ListLength(SqList L){
	return L.length;
}

void ReleaseMemory(SqList *L){
	free(L);
	L = NULL;
}